package pactice_handler

import (
	"peilian-api/app/global/bind"
	"peilian-api/app/global/errors"
	"peilian-api/app/model"
	"peilian-api/app/services/career_service"
	"peilian-api/utils/format"

	"github.com/gin-gonic/gin"
)

// 获取专项练习list
func GetSpecialAbilityList(ctx *gin.Context) {
	var ccr model.CareerCriteriaRes
	if err := bind.ShouldBinding(ctx, &ccr); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	cci, err := new(career_service.SpecialService).GetSpecialCareerList(ctx, ccr)
	if err != nil {
		format.NewResponseJson(ctx).SuccessDataList(0)
		return
	}
	format.NewResponseJson(ctx).SuccessObj(cci)
}

// 专项练习开始训练题目获取
func GetSpecialTopics(ctx *gin.Context) {
	var st model.SpecialTopicsRes
	if err := bind.ShouldBinding(ctx, &st); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	str, err := new(career_service.SpecialService).GetSpecialTopics(ctx, st)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(str)
}

// 专项练习训练列表
func GetSpecialList(ctx *gin.Context) {
	var ps model.PagePageSize
	if err := bind.ShouldBinding(ctx, &ps); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	out, count, err := new(career_service.SpecialService).GetSpecialList(ctx, ps)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessDataList(int(count), out)
}

// 专项练习训练详情
func GetSpecialDetail(ctx *gin.Context) {
	var sd model.Sid
	if err := bind.ShouldBinding(ctx, &sd); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	str, err := new(career_service.SpecialService).GetSpecialDetail(ctx, sd.Id)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(str)
}

// 专项练习点赞评价
func UpdateSpecialIsHelp(ctx *gin.Context) {
	var ser model.SpecialEvaluateRes
	if err := bind.ShouldBinding(ctx, &ser); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	err := new(career_service.SpecialService).UpdateSpecialIsHelp(ctx, ser)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(struct{}{})
}

// 专项练习redis缓存信息
func GetSpecialDetailScore(ctx *gin.Context) {
	var sd model.Sid
	if err := bind.ShouldBinding(ctx, &sd); err != nil {
		format.NewResponseJson(ctx).Err(30001, errors.ParamBindError)
		return
	}
	out, err := new(career_service.SpecialService).SpecialDetailScore(ctx, sd.Id)
	if err != nil {
		format.NewResponseJson(ctx).SuccessObj(out)
		return
	}
	format.NewResponseJson(ctx).SuccessObj(out)
}
